/**
 * 文件名称:  IJdbcDao.java
 * 文件序号:  序号
 * 内容描述:  文件简单描述，多行换行书写
 * 版权声明:  山东鸿蝶信息技术有限公司
 * 创建用户:  zhangkai
 * 创建日期:  2016/12/20 20:56
 * 修改用户:  无
 * 修改日期:  无
 * 修改说明:  无
 * 文件版本:  V1.0
 * 文件路径:
 */

package com.hongdee.common.dao;


import com.hongdee.base.entity.BaseEntity;

import java.util.List;
import java.util.Map;

/**
 * 名  称:IJdbcDao
 * 类  型: class
 * 描  述: 用一句话描述类的作用
 * 路  径:com.hongdee.dao
 * 作  者:zhangkai
 * 日  期:2016/12/20 20:56
 */
public interface IImpJdbcDao {

    /**
     * 方法名称: queryForMapBySql
     * 方法描述: 根据 sql 语句返回单条记录，并转为 Map 类型
     * 参数说明: String sql
     * 返回内容: Map<String,Object> 返回记录的Map 型式
     * 异常说明: Exception
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */
    public Map<String, Object> queryForMapBySql(String sqlStr) throws Exception;

    /**
     * 方法名称: queryForMapBySqlWithParams
     * 方法描述: 根据 sql ，参数查询 语句返回单条记录，并转为 Map 类型
     * 参数说明: String sql
     * 参数说明: Object ...params,查询参数数组，需与 sql 语句中的占位符一一对应
     * 返回内容: Map<String,Object> 返回记录的Map 型式
     * 异常说明: Exception
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */
    public Map<String, Object> queryForMapBySqlWithParams(String sqlStr, Object... params) throws Exception;

    /**
     * 方法名称: queryForMapListBySql
     * 方法描述: 根据 sql 语句返回记录的 Map集合
     * 参数说明: String sql
     * 返回内容: List<Map<String,Object>> 返回记录的Map集合
     * 异常说明: Exception
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */
    public List<Map<String, Object>> queryForMapListBySql(String sqlStr) throws Exception;

    /**
     * 方法名称: queryForMapListBySqlWithParams
     * 方法描述: 根据 sql ，参数查询 语句返回记录的 map 集合
     * 参数说明: String sql
     * 参数说明: Object ...params,查询参数数组，需与 sql 语句中的占位符一一对应
     * 返回内容: List<Map<String,Object>> 返回记录的Map 型式的集合
     * 异常说明: Exception
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */
    public List<Map<String, Object>> queryForMapListBySqlWithParams(String sqlStr, Object... param) throws Exception;

    /**
     * 方法名称:
     * 方法描述:
     * 参数名称: a
     * 参数名称: b
     * 返回内容:
     * 异常说明:
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */
    public Map<String, Object> queryForPageMap(String start, String limit, String sql, Object... params) throws Exception;

    /**
     * 方法名称:
     * 方法描述:捕获EmptyResultDataAccessException异常返回null
     * 参数名称:
     * 参数名称:
     * 返回内容:
     * 异常说明:
     * 创建用户:
     * 创建时间:
     * 修改用户:
     * 修改时间:
     * 修改内容:
     */

    public Map<String, Object> queryForMapOfNull(String sqlStr, Object... params) throws Exception;

    /**
     * 更新 SQL 语句
     *
     * @param sql
     * @param params
     * @return
     * @throws Exception
     */
    int update(String sql, Object... params) throws Exception;


    void batchSave(String tableName, List<BaseEntity> saveList) throws Exception;

    //根据主键批量删除数据
    void batchDel(String tableName, String colKey, List<Object> valList) throws Exception;

    //统计记录条数
    long countTable(String tableName) throws Exception;
}